#!/usr/bin/env python
# -*- coding:utf-8 -*-

import json
import  os
#删和加都用到查的代码
#打开文件，找到代码块，拿出来
#代码块用来获取的方法
'''
def fetch(bachend):
    pass
fetch('www.oldboy.org')
'''
def fetch(backend):
    fetch_list=[]
    with open('config','r') as f:
        flag= False
        #f.readlines() #读取所有行，房屋列表，不可取，
        for line in f:
            if line.strip()== "backend %s" % backend:
                flag=True
                continue
            if flag and line.strip().startswith("backend"): #flag=false
                break
            #为什么不在第二个判断上面，他也满足开头是backend和字符串不为空的
            if flag and line.strip():
                fetch_list.append(line.strip())
    return fetch_list
result = fetch('www.oldboy.org')
'''
#add
#找到backend，添加一条（已经存在，不在添加）
1、找到指定backend的下所有记录：
[
    "server"
    "server"
]
2、处理记录
    如果存在改记录
    不存在
    [
        "server"
        "server"添加的
    ]
'''
def add1(dict_info):  #dict_info是字典
    backend_title= dict_info.get('backend')   #取出域名
    current_title= "backend %s" % backend_title
    current_record = "server %s weight %s maxconn %s" % (dict_info["record"]["server"],dict_info["record"]["weight"],dict_info["record"]["maxconn"])
    #获取指定backedn下所有记录，直接调用fethch
    fetch_list=fetch(backend_title)
    #如果是空列表，此段位置不存储
    if fetch_list: #存在backend,只需再添加记录
        #两种情况，要插入的记录存在，和不存在
        if current_record in fetch_list:
            print '一有此记录'
        else:
            with open('config') as fr,open('config.new','w') as fw:
                flag=False
                has_write=False
                for line in fr: #分几种情况
                    if line.strip() == current_title:   #写中间个title
                        fw.write(line)
                        flag=True
                        continue
                    if line.strip().startswith("backend") and flag: #写中间那个record
                        #中，把列表所有数据写入
                        if not has_write:
                            for new_line in fetch_list:
                                temp = "%s %s \n" % (" "*8,new_line)
                                fw.write(temp)
                            has_write=True
                    else:       #写别的，上下
                        #上，下，写入
                        fw.write(line)
            print '已增加'
        #写入文件

    else :  #不存在backend，添加backend和记录
        #打开两个文件
        with open('config') as fr,open('config.new','w') as fw:
            #从原文件读，写到新文件
            for line in fr:
                fw.write(line)
            #把backend那行写入新文件
            fw.write(current_title+'\n')
            #把record哪行写入新文件
            temp = "%s %s \n" % (" "*8,current_record)
            fw.write(temp)
    #os.rename("config","config.bak")
    #os.rename("config.new","config")
'''
check
ha > ha.bak
ha.new>ha
'''

s='{"backend": "test.oldboy.org","record":{"server": "100.1.7.99","weight": 20,"maxconn": 30}}'
data_dict=json.loads(s)
add1(data_dict)